perm filename MSSIO.FAI[RST,LCS] blob sn#210723 filedate 1976-04-09 generic text, type C, neo UTF8
COMMENT βŠ—   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE MSSIO  ********* JUN 8,74 *********
C00004 00003
C00007 ENDMK
CβŠ—;
	TITLE MSSIO ; ********* JUN 8,74 *********
;;	INTERNAL GETFI2,FASTI2,LOOP
	INTERNAL GETFI2,FASTI2
	INTERNAL LOOK,LOOKD,LOOKF,PAC,UNPAC


	CH3←13

DEFINE ERROR (MSG)
<	JSA 16,.ERROR
	JUMP [ASCIZ/MSG/
]
>

;CALL GETFI2(<FILE>,<0 OR -1>)  0=DAT,LCS  -1=WHERE YOU ARE.

GETFI2:	0
	MOVE 0,@0(16)
	MOVEM 0,FILNAM
	MOVE 0,@1(16)
	MOVEM 0,PPNW#
	JSA 16,INTFIZ
	MOVE 0,[SIXBIT/DMD/]
	MOVEM 0,DIR+1
	JSA 16,LKUP
	SKIPA
	JRST GETF3
	SETZM DIR+1
	JSA 16,LKUP
	0
GETF3:	JRA 16,2(16)

LKUP:	0
	SETZM DIR+2
	SETZM DIR+3
	SKIPE PPNW	;0=DAT,LCS    NON-ZERO = WHERE EVER YOU ARE
	JRST LUP
	MOVE 0,[SIXBIT/DATLCS/]
	MOVEM 0,DIR+3
LUP:	LOOKUP CH3,DIR
	JRA 16,0(16)
	JRA 16,1(16)

INTFIZ:	0	;INITS DSK FOR INPUT
	MOVEI REGS
	BLT REGS+3
	INIT CH3,17
	SIXBIT/DSK/
	0
	ERROR <CAN'T INIT DSK!>
	JRST INTF4


;CALL FASTI2(<ARRAY>,<NO. WORDS>)

FASTI2:	0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	INPUT CH3,COM
	STATZ CH3,740000
	0
	JRA 16,2(16)

COM:	OCT 0,0
BLKNUM:	0

.ERROR:	0
	OUTSTR [ASCIZ/?
/]				;MAKE SURE HE CAN SEE HIS ERROR
	OUTSTR @(16)		;OUTPUT ERROR MESSAGE
	CALLI 1,12		;LET USER CONTI2UE
	JRA 16,1(16)

	CH←13

REGS:	BLOCK 20

;LOOK(<FILE>) FOR NO EXT., LOOKD() FOR .DAT, LOOKF() FOR .DMD

LOOKF:	0
	MOVSI 0,'DMD'
	JRST LOOK1
LOOKD:	0
	MOVSI 0,'DAT'
	JRST LOOK1
LOOK:	0
	MOVEI	0,0
LOOK1:	MOVEM	0,DIR+1
	MOVE	0,@(16)
	MOVEM 	0,FILNAM
	JSA 16, INTFIQ
	SETZM	DIR+2
	SETZM	DIR+3
	LOOKUP	CH,DIR
	TDZA	0,0
	MOVNI	0,1
	JRA 16,1(16)

INTFIQ:	0	;INITS DSK FOR INPUT
	MOVEI REGS
	BLT REGS+3
	INIT CH,17
	SIXBIT/DSK/
	0
	HALT .-3
;	ERROR <CAN'T INIT DSK!>

;;INTF4:	MOVE 0,FILNAM#
;;	MOVEM 0,FN#
;;	MOVE 1,[POINT 7,FN]
INTF4:	MOVE 1,[POINT 7,FILNAM#]
INTF3:	MOVE 2,[POINT 6,DIR]
	SETZM DIR
	MOVEI 3,5
INTF1:	ILDB 0,1
;;	CAIN 0," "
;;	JRST INTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,INTF1
INTF2:	HRLZI REGS
	BLT 3
	JRA 16,0(16)

DIR:	BLOCK 4


PAC:	0		;CALL PAC(PW,AR)
	HRRZ 4,1(16)	; ******* USES AC'S 4,5,6 ********
	ADDI 4,2
	HRR 5,@4	;SIZE IS 12 BITS
	LSHC 5,-10
	SOJ 4,
	HRR 5,@4
	LSHC 5,-16
	SOJ 4,
	HRR 5,@4
	LSHC 5,-16
	MOVEM 6,@0(16)
	JRA 16,2(16)
UNPAC:	0		;CALL UNPAC(PW,AR)
	HRRZ 1,1(16)
	ADDI 1,2
	MOVE 2,@0(16)
	LSHC 2,-10
	ASH 3,-34
	MOVEM 3,@1
	SOJ 1,
	LSHC 2,-16
	ASH 3,-26
	MOVEM 3,@1
	SOJ 1,
	LSHC 2,-16
	ASH 3,-26
	MOVEM 3,@1
	JRA 16,2(16)


;	SUBROUTINE LOOP(I,J,K,L,M,N)
;	DIMENSION N(1)
;	DO 1 NN=I,J,K
;1	N(NN+L)=N(NN+M)
;	END

;;LOOP:	0
;;	MOVE 4,@1(16)
;;	MOVE 3,@0(16)
;;	SUB 4,3
;;	HRRZ 2,5(16)
;;	SOJ 2,
;;	ADD 2,3
;;	JUMPL 4,MIMI
;;	HRR 5,2
;;	ADD 5,@3(16)
;;	ADD 4,2
;;	ADD 4,@3(16)
;;	ADD 2,@4(16)
;;	HRL 5,2
;;	BLT 5,(4)
;;	JRA 16,6(16)
;;MIMI:	HRR 5,@4(16)
;;	HRRM 5,XN
;;	HRR 5,@3(16)
;;	HRRM 5,XN+1
;;XN:	MOVE 6,(2)
;;	MOVEM 6,(2)
;;	SOJ 2,
;;	AOJL 4,XN
;;	JRA 16,6(16)
	END